package main

import (
	"fmt"
	"unsafe"
)

func main() {
	//TODO nil 标识符不能判定是否相等
	//fmt.Println(nil == nil)
	//TODO nil 没有默认类型
	//fmt.Printf("%T", nil)
	//print(nil)

	//TODO 不同类型 nil 的指针是一样的
	var arr[] int
	var num *int
	fmt.Printf("%p\n", arr)
	fmt.Printf("%p\n", num)
	//TODO 不同类型的 nil 值占用的内存大小可能是不一样的
	var p *struct{}
	fmt.Println(unsafe.Sizeof(p))
	var s []int
	fmt.Println(unsafe.Sizeof(s))
	var m map[int]bool
	fmt.Println(unsafe.Sizeof(m))
	var c chan string
	fmt.Println(unsafe.Sizeof(c))
	var f func()
	fmt.Println(unsafe.Sizeof(f))
	var i interface{}
	fmt.Println(unsafe.Sizeof(i))
}
